/**@file
  GPIO data for use with GPIO ASL lib

  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include "Register/GpioRegs.h"
#include "Register/GpioRegsVer6.h"
#include "GpioAcpiDefinesMtl.h"

//
// If in GPIO_GROUP_INFO structure certain register doesn't exist
// it will have value equal to NO_REGISTER_FOR_PROPERTY
//
#define NO_REGISTER_FOR_PROPERTY 0xFFFF

//
// If in GPIO_GROUP_INFO structure certain group should not be used
// by GPIO OS driver then "Gpio base number" field should be set to below value
//
#define GPIO_OS_DRV_NOT_SUPPORTED 0xFFFF

//
// GPIO Library objects
//
Scope (\_SB)
{
  //
  // GPIO information data structure
  //

  //
  // GPIO information data structures
  Name(GPCS, Package(){
    // COM0
    Package(){ // CPU
      PCH_GPIO_COM0,
      GPIO_VER6_SOC_M_CPU_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_CPU_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_CPU_PECI
    },
    Package(){ // GPP_V
      PCH_GPIO_COM0,
      GPIO_VER6_SOC_M_GPP_V_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_V_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_V0
    },
    Package(){ // GPP_C
      PCH_GPIO_COM0,
      GPIO_VER6_SOC_M_GPP_C_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_C_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_C0
    },
    // COM1
    Package(){ // GPP_A
      PCH_GPIO_COM1,
      GPIO_VER6_SOC_M_GPP_A_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_A_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_A0
    },
    Package(){ // GPP_E
      PCH_GPIO_COM1,
      GPIO_VER6_SOC_M_GPP_E_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_E_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_E0
    },
    // COM2
    // COM3
    Package(){ // GPP_H
      PCH_GPIO_COM3,
      GPIO_VER6_SOC_M_GPP_H_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_H_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_H0
    },
    Package(){ // GPP_F
      PCH_GPIO_COM3,
      GPIO_VER6_SOC_M_GPP_F_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_F_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_F0
    },
    Package(){ // SPI_SYS
      PCH_GPIO_COM3,
      GPIO_VER6_SOC_M_SPI_SYS_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_SPI_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_SPI0_IO2
    },
    Package(){ // THC
      PCH_GPIO_COM3,
      GPIO_VER6_SOC_M_USB_THC_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_USB_0
    },
    // COM4
    Package(){ // GPP_S
      PCH_GPIO_COM4,
      GPIO_VER6_SOC_M_GPP_S_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_S_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_S0
    },
    Package(){ // JTAG
      PCH_GPIO_COM4,
      GPIO_VER6_SOC_M_JTAG_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_JTAG_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_MBPB0
    },
    // COM5
    Package(){ // GPP_B
      PCH_GPIO_COM5,
      GPIO_VER6_SOC_M_GPP_B_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_B_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_B0
    },
    Package(){ // GPP_D
      PCH_GPIO_COM5,
      GPIO_VER6_SOC_M_GPP_D_PAD_MAX,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_PADCFG_OFFSET,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_HOSTSW_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_PAD_OWN,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_GPI_GPE_STS,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_GPP_D_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_GPP_D0
    },
    Package(){ // VGPIO
      PCH_GPIO_COM5,
      GPIO_VER6_SOC_M_VGPIO_PAD_MAX,
      NO_REGISTER_FOR_PROPERTY,
      NO_REGISTER_FOR_PROPERTY,
      NO_REGISTER_FOR_PROPERTY,
      NO_REGISTER_FOR_PROPERTY,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PADCFGLOCK,
      R_GPIO_VER6_SOC_M_GPIO_PCR_VGPIO_PADCFGLOCKTX,
      GPIO_VER6_SOC_M_DRIVER_VGPIO0
    }
  })
}